import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:photo_manager/photo_manager.dart';

import '/app/controllers/history_manager.dart';
import '/app/pages/home/widgets/item_video_card.dart';

class VideoListController extends GetxController {
  var videoList = <AssetEntity>[].obs; // 视频列表
  var title = ''.obs; // 标题
  var contentType = ''.obs; // 内容类型

  @override
  void onInit() {
    super.onInit();
    title.value = Get.parameters['title'] ?? '默认标题';
    contentType.value = Get.parameters['contentType'] ?? 'default';
    loadVideosByType();
  }

  // 根据类型加载视频
  Future<void> loadVideosByType() async {
    if (contentType.value == 'history') {
      await loadHistoryVideos();
    }
  }

  // 加载历史播放记录
  Future<void> loadHistoryVideos() async {
    List<AssetEntity> videos = await HistoryManager.getHistoryVideos();
    videoList.assignAll(videos.reversed.toList()); // 将历史视频倒序展示
  }

  // [变动1] 清空历史记录并刷新页面
  Future<void> clearHistory() async {
    await HistoryManager.clearAll(); // 清空历史记录
    videoList.clear(); // 清空列表以触发 UI 刷新
  }
}

class VideoListPage extends StatelessWidget {
  final VideoListController logic = Get.put(VideoListController());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Obx(() => Text(logic.title.value)), // 动态显示标题
        actions: [
          IconButton(
            icon: Icon(Icons.clear_all_outlined),
            onPressed: () async {
              // [变动2] 清空历史记录并刷新页面
              await logic.clearHistory();
              await logic.loadVideosByType(); // 重新加载视频
            },
          ),
        ],
      ),
      body: Obx(() {
        if (logic.videoList.isEmpty) {
          return Center(child: Text('没有找到视频。')); // 当视频列表为空时显示提示
        }

        return ListView.builder(
          itemCount: logic.videoList.length,
          itemBuilder: (context, index) {
            final video = logic.videoList[index];

            // 使用 FutureBuilder 获取视频缩略图
            return FutureBuilder<Uint8List?>(
              future: video.thumbnailDataWithSize(ThumbnailSize(200, 200)),
              builder: (context, snapshot) {
                if (!snapshot.hasData) {
                  return CircularProgressIndicator(); // 加载缩略图时的加载指示器
                }

                // 使用 VideoCard 组件展示视频信息
                return VideoCard(
                  image: Image.memory(
                    snapshot.data!,
                    fit: BoxFit.cover,
                  ),
                  videoName: video.title ?? "Unknown",
                  // 替换为实际视频名
                  currentTime: '00:00',
                  // 可以替换为实际观看进度
                  totalTime: '10:00',
                  // 可以替换为实际视频时长
                  assetEntity: video,
                  // 传入当前视频的 AssetEntity
                  all: logic.videoList,
                  // 传入全部视频列表
                  isRowMode: true, // 设置为行展示模式
                );
              },
            );
          },
        );
      }),
    );
  }
}
